Much software is written to be executed in a variety of scenarios, which can be represented and distinguished from one another by the software's output and/or by the different scenarios' respective inputs to the software. In different scenarios the inputs to the software may differ in their values, in their sequence, or both. Different portions of the software may be executed in a given scenario, depending on which inputs are entered by users or otherwise obtained by the software from external sources, or generated within the software, and depending on the sequence in which the software receives the inputs.
In particular, a scenario may involve debugging and/or testing the software against performance, accuracy, ease of use, and/or other requirements to see how the software behaves in response to specified inputs. When software is being debugged or tested, the users and developers of the software tend to focus their attention on the particular portions of the software that execute in the scenario in question. The rest of the software may thus be viewed as irrelevant, or even as a hindrance to the debugging or testing efforts.